// Copyright personal possession of Nguyen Minh Kha
// Datetime: 11:13AM 10/28/2011
// Discription: This class manage all game object in game, it may have two part
// Licencse: Free source
// Version: 1.0
// Writer: Nguyen Minh Kha

/* Google opensource coding standard with variable name exception */

#ifndef GAMEFRAMEWORK_RENDERABLE_MANAGER_H_
#define GAMEFRAMEWORK_RENDERABLE_MANAGER_H_

#include <Windows.h>

#include "renderable_object.h"


class RenderableManager {
  
  /* Struct */
private:
  struct List {
    RenderableObject *object;
    struct List* pNext;
  };

  /* Static */
  static RenderableManager* thisPointer;
public:
  static RenderableManager* getInstance() {
    return RenderableManager::thisPointer;}
  /* Constructor; Destructor */
public:
  RenderableManager(void);
  ~RenderableManager(void);

  /* Methods */
public:
  void Add(RenderableObject *object);
  void Delete(RenderableObject *object);
  void RemoveAll();

  //
  // token call function
  void Renders();

  /* Data member */
public:
private:
  List* pHead;
};

#endif // GAMEFRAMEWORK_RENDERABLE_MANAGER_H_